/**
 * 数组去重
 */
// 1. 最简短方便的方式---ES6的Set，本质上是使用 哈希表
const uniqueArray1 = (array) => {
  return [ ...new Set(array) ]
}

// 2. indexOf去重
const uniqueArray2 = (array) => {
  let result = []

  array.forEach((it, i) => {
    if (result.indexOf(it) === -1) {
      result.push(it)
    }
  })

  return result
}

// 3. indexOf去重另一个版本
const uniqueArray3 = (array) => {
  return array.filter((it, i) => array.indexOf(it) === i) // 只保留元素首个出现的位置
}

// 4. Array.from去重
const uniqueArray4 = (array) => {
  return Array.from(new Set(array))
}

// 5. 哈希表去重
const uniqueArray5 = (arr)=>{
  const map = new Map();
  for(let item of arr){
    if(!map.has(item)){
      map.set(item,1)
    }
  }

  return Array.from( map.keys() )
}

let testArray = [ 1, 2, 3, 1, 2, 3, 4 ]

console.log(uniqueArray1(testArray))
console.log(uniqueArray2(testArray))
console.log(uniqueArray3(testArray))
console.log(uniqueArray4(testArray))
console.log(uniqueArray5(testArray))